home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / video / fly8111-.000 / fly8111- / fly8 / log.c < prev    next >
C/C++ Source or Header  |  1979-12-31  |  2KB  |  105 lines

  1. /* --------------------------------- log.c ---------------------------------- */
  2.  
  3. /* This is part of the flight simulator 'fly8'.
  4.  * Author: Eyal Lebedinsky (eyal@ise.canberra.edu.au).
  5. */
  6.  
  7. /* log file stuff.
  8. */
  9.  
  10. #include "fly.h"
  11.  
  12.  
  13. #define NOTHINGTOLOG    0xffffffffUL
  14.  
  15. static FILE *flog = 0;
  16.  
  17. extern int FAR
  18. log_init (void)
  19. {
  20.     char    *lname;
  21.  
  22.     STATS_LOGTIME = NOTHINGTOLOG;
  23.  
  24.     if (F(lname = st.lname))
  25.         lname = LOGFILE;
  26.  
  27.     if (!(flog = fopen (lname, ATMODE))) {
  28. #ifndef NOSTDERR
  29.         fprintf (stderr, "open failed for log file '%s'\n", lname);
  30. #endif
  31.         return (1);
  32.     }
  33.     return (0);
  34. }
  35.  
  36. extern void FAR
  37. log_term (void)
  38. {
  39.     if (flog) {
  40.         fclose (flog);
  41.         flog = 0;
  42.     }
  43. }
  44.  
  45. extern int FAR
  46. log_flush (int now)
  47. {
  48.     if (NOTHINGTOLOG == STATS_LOGTIME)
  49.         return (0);
  50.     if (!now && st.present < (Ulong)STATS_LOGTIME)
  51.         return (0);
  52.     STATS_LOGTIME = NOTHINGTOLOG;
  53.     if (flog) {
  54.         log_term ();
  55.         if (log_init())
  56.             return (-1);
  57.     }
  58.     return (0);
  59. }
  60.  
  61. extern int FAR
  62. LogPrintf (const char *fmt, ...)
  63. {
  64.     va_list        ap;
  65.     int        i;
  66.  
  67.     if (!flog) {
  68. #ifndef NOSTDERR
  69.         va_start (ap, fmt);
  70.         i = vfprintf (stderr, fmt, ap);
  71.         fflush (stderr);
  72.         va_end (ap);
  73.         return (i);
  74. #endif
  75.         return (-1);
  76.     }
  77.  
  78.     va_start (ap, fmt);
  79.     i = vfprintf (flog, fmt, ap);
  80.     va_end (ap);
  81.  
  82.     STATS_LOGTIME = st.present + (st.misc[9] > 0 ? st.misc[9] : 0);
  83.     log_flush (0);
  84.  
  85.     return (i);
  86. }
  87.  
  88. extern void FAR
  89. LogDumpHex (char *title, Uchar *h, int hlen)
  90. {
  91.     int    i;
  92.  
  93.     LogPrintf ("%s:", title);
  94.     for (i = 0; i < hlen; ++i) {
  95.         if (!(i%32))
  96.             LogPrintf ("\n  ");
  97.         else if (!(i%16))
  98.             LogPrintf ("   ");
  99.         else if (!(i%4))
  100.             LogPrintf (" ");
  101.         LogPrintf ("%02x", h[i]);
  102.     }
  103.     LogPrintf ("\n");
  104. }
  105.